stylecontext: Disallow adding/removing GtkSettings style providers
authorBenjamin Otte <otte@redhat.com>
Wed, 2 May 2012 04:28:57 +0000 (06:28 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 2 May 2012 15:04:49 +0000 (17:04 +0200)
Adding "system" providers like the GtkSettings object shouldn't be
allowed at all, so ensure that it indeed is not.

gtk/gtkstylecontext.c

index ece1b8db0afe7511642bc11cb0a71d90ee4f2a37..1ed5eb4d4008c4c5d853e0769c9dc2a6efd7ed41 100644 (file)
@@ -43,6 +43,7 @@
 #include "gtkstylecascadeprivate.h"
 #include "gtkstyleproviderprivate.h"
 #include "gtksettings.h"
+#include "gtksettingsprivate.h"
 
 /**
  * SECTION:gtkstylecontext
@@ -1237,6 +1238,7 @@ gtk_style_context_add_provider_for_screen (GdkScreen        *screen,
 
   g_return_if_fail (GDK_IS_SCREEN (screen));
   g_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
+  g_return_if_fail (!GTK_IS_SETTINGS (provider) || _gtk_settings_get_screen (GTK_SETTINGS (provider)) == screen);
 
   cascade = _gtk_style_cascade_get_for_screen (screen);
   _gtk_style_cascade_add_provider (cascade, provider, priority);
@@ -1259,6 +1261,7 @@ gtk_style_context_remove_provider_for_screen (GdkScreen        *screen,
 
   g_return_if_fail (GDK_IS_SCREEN (screen));
   g_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
+  g_return_if_fail (!GTK_IS_SETTINGS (provider));
 
   cascade = _gtk_style_cascade_get_for_screen (screen);
   _gtk_style_cascade_remove_provider (cascade, provider);